# coding=utf-8
import os


class BaseConfig(object):
    PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

    SQLALCHEMY_DATABASE_URI = "mysql+pymysql://%s:%s@%s:%d/%s?charset=utf8&use_unicode=0" % (
        'root', '123456',
        '172.16.3.192', 3307,
        'ubarrier-config'
    )

    # 自动回收连接的秒数。这对 MySQL 是必须的，默认 情况下 MySQL 会自动移除闲置 8 小时或者以上的连接。 需要注意地是如果使用 MySQL 的话， Flask-SQLAlchemy 会自动地设置这个值为 2 小时。
    SQLALCHEMY_POOL_RECYCLE = 1200
    # 控制在连接池达到最大值后可以创建的连接数。当这些额外的 连接回收到连接池后将会被断开和抛弃。
    SQLALCHEMY_MAX_OVERFLOW = 10

    DEBUG = False

    ENABLED_MODULES = (
        'common',
        'log',
        'thread',
        'apps',
        'entrance',
        'zones',
        'switch',
        'notify',
        'api',
    )

    AUTHORIZATIONS = {
        'oauth2_password': {
            'type': 'oauth2',
            'flow': 'password',
            'scopes': {},
            'tokenUrl': '/auth/oauth2/token',
        },
    }

    # JOBS = [
    #     {
    #         'id': 'getSwitctStatusJob',
    #         'func': 'app.modules.common.scheduler:getSwitctStatusJob',
    #         'args': (),
    #         'trigger': 'interval',
    #         'minutes': 120
    # 'seconds': 30
    # }
    # ]

    SWAGGER_UI_JSONEDITOR = True
    SWAGGER_UI_OAUTH_CLIENT_ID = 'documentation'
    SWAGGER_UI_OAUTH_REALM = 'Authentication for ubarrier-config documentation'
    SWAGGER_UI_OAUTH_APP_NAME = 'ubarrier-config documentation'

    SQLALCHEMY_TRACK_MODIFICATIONS = True
    CSRF_ENABLED = True

    ROLE_ADMIN_ID = 1

    # BEETLE_AUTH_URL = 'http://192.168.56.113:5001/api/v1/login/info'
    BEETLE_AUTH_URL = 'http://172.16.3.192:5001/api/v1/login/info'

    # hosts类型资源需要按组分开传的区域列表
    HOSTS_GROUP_ZONE = ['uc.gzidc.area']

    ENV_NAME_LIST = ['online']
    RELEASE_INFO_FILE_PATH = "/Users/wangjian/Documents"
    # 超时时间  秒
    UBARRIER_OVER_TIME = 30
    # 根据json文件更新数据库应用列表时，忽略数据库内的这些应用
    UPDATE_IGNORE_APP = ['erp']
    # 一键切换完成后 提醒的等待时间 默认10分钟  单位：分钟
    AUTO_SWITCH_WAIT_TIME = 1

    NOTIFY_ASYNC_MODE = None


class DevelopmentConfig(BaseConfig):
    DEBUG = False


class TestingConfig(BaseConfig):
    DEBUG = True


class ProductionConfig(BaseConfig):
    pass


class LocalConfig(BaseConfig):
    DEBUG = True


class AuthConfig(object):
    pass
